The present invention relates to integrated circuit design, and more particularly to a design timing verification tool that is capable of handling both dynamic simulation and static timing analysis in the same environment and can further target both fall-custom and ASIC designs in the unified environment.
Verifying the design of integrated circuits before fabrication is an important process, especially as integrated circuits become more complex and design cycles become increasingly short. Design verification includes many steps, a critical one being timing verification. For this purpose, static timing analysis tools such as Prime Time from Synopsys are conventionally used to verify the timing of the chip by checking all the paths enumeratively or selectively without the need to provide test vectors at the primary inputs of the chip as required by dynamic simulation. However, the delay calculator built into the static timing analysis tool usually cannot be tuned into a full-blown timing simulator, and an additional simulator tool must be used. So traditionally, as shown in FIG. 1, static timing analysis and timing simulation are performed by two separate tools.
Another problem is that conventional integrated circuit designs can include both full-custom and application-specific integrated circuit (ASIC) portions. However, static timing analysis tools for ASIC designs normally cannot be used for full-custom designs that tend to be based on a transistor level. Accordingly, as further shown in FIG. 1, separate tools must be used to perform static timing analysis on the two separate design portions. It would be more desirable to have a common environment for both static timing analysis and timing simulation, as well as for verifying both ASIC and full-custom designs.
Currently available design tools have other shortcomings as well. In some conventional static timing analyzers, the path search is carried out from input to latch, latch to latch and latch to output to detect failing paths. It is well-known that the breadth first traversal (BFT) method, which searches paths forward to get the latest or the shortest time and then traces backward in depth first manner to get the slack, can run much faster than depth first traversal (DFT) or a depth first traversal with pruning method. However, there is a need in the art for a general BFT solution for circuits with, for example, level sensitive latches, as well as multi-phase and multi-frequency circuits.
Another problem is that during timing analysis, issues like false path and gates with simultaneously changing inputs cannot be ignored. Since the logic values for the side inputs of the gate along the falling paths are obtained from a pre-characterized timing library, these definite logic values (using unknown to Vdd or Gnd instead of definite Vdd or Gnd) and the rising or falling values at the input along the path can propagate as deep as possible. If a conflict occurs, then this is a false path. It may occur that the side input of a gate originally has the value unknown to Vdd or Gnd, then becomes rise or fall, similar to the input of the gate along the failing path, which dominates over unknown to Vdd or Gnd without conflict after function analysis. This is how simultaneously changing inputs occur. Normally, the gate with simultaneously changing inputs does not have pre-characterization results in the timing library, and so an in-circuit delay calculator must be used to evaluate the delay of this gate correctly.
Without filtering out the false paths, it is meaningless to calculate the maximum operating frequency of the circuit. Accordingly, it would be desirable if there were a method to solve the maximum operating frequency after filtering out the false paths. Each true failing path may consist of several segments including input to the first latch, latch to latch, and last latch to output. Each segment has its own timing constraint. This can be a formidable task to solve.
Another problem is that due to nanometer design, the issue of crosstalk has become increasingly important. In order to find the latest or shortest delay at victim's output, many runs of simulation for both driver and RLC parts need to be performed. It is very standard to generate reduced order modeling for the RLC part and couple it with drivers for simulation. Since the number of ports of a RLC network can be huge, the matrix of the reduced order modeling tends to be big and dense, causing degradation of performance. Therefore, it would be highly desirable to have a special algorithm to efficiently integrate the driver part in the time domain with the RLC part in frequency domain into a single simulation engine.
Another issue of crosstalk is the need to consider the correlation between aggressors and victim in order to get more accurate delay. Without considering the correlation between aggressors and victim, the aggressors are always assumed to switch in opposite direction to that of the victim and the switching times of the aggressors are found to fall in the timing window. The results for victim delays calculated this way are always too pessimistic. This problem can be further complicated due to the fact that there is a mixture of aggressors with groups of aggressors being correlated to the victim, correlated among the aggressors in the group, and totally uncorrelated to either aggressors or victim. Moreover, the victim delay can be a function of the switching times of aggressor which in turn are also affected by the victim delay, a chicken-and-egg type of problem. It would be desirable to have a general solution to resolve these difficult issues.